/* 
 * File:   Shape.h
 * Author: brady
 *
 * Created on June 20, 2011, 7:04 PM
 */

#ifndef SHAPE_H
#define	SHAPE_H

#include <dto/IntersectionParams.h>
#include <dto/IntersectionResult.h>
#include <core/BoundingBox.h>
#include <textures/Texture.h>
#include <string>
class Shader;

using namespace std;

class Shape {
public:
    Shape();
    Shape(const Shape& orig);
    const BoundingBox& getBoundingBox(){return boundingBox;}
    const Shader* getShader(){return shader;}
    virtual void setShader(const Shader* shader){this->shader = shader;}
    virtual bool testIntersect(IntersectionParams& ip, IntersectionResult& ir) = 0;
    virtual void finalize(){}
    virtual ~Shape();
    string name;
    string material;
    Texture* texture;
protected:
    const Shader *shader;
    BoundingBox boundingBox;
private:

};

#endif	/* SHAPE_H */

